package it.prova.uml.value;

import java.util.List;

import org.eclipse.jst.jsf.metadataprocessors.IType;




public abstract class AbstractRootTypeDescriptor extends AbstractMetaDataEnabledFeature
implements ITypeDescriptor {
private IType type;
	
	/**
	 * Default implementation that will return <code>this</code> if it supports the processing feature,
	 * and all {@link IMetaDataEnabledFeature}s that also support this feature on this type.   The caller can determine
	 * which one or more of the returned processors to use.
	 *    
	 * @param processingFeature class
	 * @return List of <code>IMetaDataEnabledFeature</code>s that support the
	 * specified featureType interface.  
	 * 
	 * @see org.eclipse.jst.jsf.metadataprocessors.ITypeDescriptor#getFeatureAdapters(java.lang.Class)
	 */
	@SuppressWarnings({ "unchecked", "rawtypes" })
	public List getFeatureAdapters(Class processingFeature) {
		return null;

	}
	
	/**
	 * This implementation relies on the the feature implementor using a subclass of AbstractRootTypeDescriptor 
	 * which implements {@link IMetaDataEnabledFeature}.
	 * 
	 * @param processingFeature
	 * @return list of <code>IMetaDataEnabledFeature</code>s
	 */
	protected final List<IMetaDataEnabledFeature> findMetaDataEnabledFeaturesForThisType(@SuppressWarnings("rawtypes") Class processingFeature) {
		return null;
	}	

	/* (non-Javadoc)
	 * @see org.eclipse.jst.jsf.metadataprocessors.ITypeDescriptor#getRuntimeType()
	 */
	public IType getTypeExtension() {
		return type;
	}


	/* (non-Javadoc)
	 * @see org.eclipse.jst.jsf.metadataprocessors.ITypeDescriptor#setRuntimeType(org.eclipse.jst.jsf.metadataprocessors.internal.AbstractMetaDataEnabledType)
	 */
	public void setTypeExtension(IType type) {
		this.type = type;
	}
	

}
